/*--------------------------------------------------*/
/*VirtualSociety System ServiceModuleTemplate Header File*/
/*CreateBy SRPLab                */
/*CreateDate: 2011-3-29  */
/*--------------------------------------------------*/
#ifndef SRPSIMGLIBENGINE_HEADERFILE
#define SRPSIMGLIBENGINE_HEADERFILE

#include "SRPSImgLibEngine.h"
#if( VS_OS_TYPE == VS_OS_WINDOWS )

#pragma warning (disable:4819)
#pragma warning (disable:4244)
#pragma warning (disable:4996)
#pragma warning (disable:4800)
#endif

#pragma pack(4)

/*--------------------------------------------------*/
extern "C" SRPDLLEXPORT VS_ULONG VSModuleFunction_GetVersion();
extern "C" SRPDLLEXPORT void VSModuleFunction_GetModuleInfo(VS_INT8 *InfoBuf,VS_INT32 BufSize);
extern "C" SRPDLLEXPORT VS_INT32 VSModuleFunction_ModuleInit(VS_ULONG ServiceGroupID, VS_QueryServiceInterfaceProc QueryServiceInterface);
extern "C" SRPDLLEXPORT void VSModuleFunction_SetModuleHandle(VS_HANDLE hModuleHandle);
extern "C" SRPDLLEXPORT VS_INT32 VSModuleFunction_ModuleTerm();
extern "C" SRPDLLEXPORT VS_INT32 VSModuleFunction_RequestRegisterObject();

/*++++++++++++++++++++++++++++++++++++++++++++++++++*/
//----output sysrootitem name and ID
#define VSOBJNAME_BASICSERVICEITEM                                                         "BasicServiceItem"
extern VS_UUID VSOBJID_BasicServiceItem;

/*++++++++++++++++++++++++++++++++++++++++++++++++++*/
#define VSIMPORTMODULENAME_BASICMODULE                                                     "BasicModule"  
extern VS_UUID VSIMPORTMODULEID_BasicModule;

/*++++++++++++++++++++++++++++++++++++++++++++++++++*/
#define VSOBJNAME_SIMGLIBCLASS                                                                     "SImgLibClass"
extern VS_UUID VSOBJID_SImgLibClass;
#define VSATTRDEPEND_SIMGLIBCLASS(X)  {}
#define VSATTRDEPENDNUM_SIMGLIBCLASS                                                               0
extern VS_INT32 SRPCALLBACK SImgLibClass_RequestRegisterObject( );

/*------Variable Index Define */
#define VSATTRNUMBER_SIMGLIBCLASS                                                                  0

/*------Local Define Function */
/*[Private Function] :     */
extern VS_UUID VSFUNCID_SImgLibClass_C_DecodeImg;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_C_DECODEIMG(X)  {{X[0].Type=1;}}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_C_DECODEIMG                                             1
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_C_DECODEIMG(X)  {{X[0].Type=59;}{X[1].Type=53;}{X[2].Type=53;}{X[3].Type=59;}}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_C_DECODEIMG                                              4

extern VS_BOOL SRPAPI SImgLibClass_C_DecodeImg(void *Object,VS_BINBUFPTR InputBuf,VS_UINT32 * OutWidth,VS_UINT32 * OutHeight,VS_BINBUFPTR OutputBuf);
typedef VS_BOOL (SRPAPI *SImgLibClass_C_DecodeImgProc)(void *Object,VS_BINBUFPTR InputBuf,VS_UINT32 * OutWidth,VS_UINT32 * OutHeight,VS_BINBUFPTR OutputBuf);

/*[Private Function] : bool,Width,Height=DecodeImg(InputBuf,OutputBuf)    */
extern VS_UUID VSFUNCID_SImgLibClass_DecodeImg;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_DECODEIMG(X)  {}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_DECODEIMG                                               0
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_DECODEIMG(X)  {}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_DECODEIMG                                                0

extern VS_INT32 SRPAPI SImgLibClass_DecodeImg(void);
typedef VS_INT32 (SRPAPI *SImgLibClass_DecodeImgProc)(void);

/*[Private Function] :     */
extern VS_UUID VSFUNCID_SImgLibClass_C_CodeBMP;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_C_CODEBMP(X)  {{X[0].Type=1;}}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_C_CODEBMP                                               1
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_C_CODEBMP(X)  {{X[0].Type=7;}{X[1].Type=7;}{X[2].Type=59;}{X[3].Type=59;}}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_C_CODEBMP                                                4

extern VS_BOOL SRPAPI SImgLibClass_C_CodeBMP(void *Object,VS_UINT32 InWidth,VS_UINT32 InHeight,VS_BINBUFPTR InputBuf,VS_BINBUFPTR OutputBuf);
typedef VS_BOOL (SRPAPI *SImgLibClass_C_CodeBMPProc)(void *Object,VS_UINT32 InWidth,VS_UINT32 InHeight,VS_BINBUFPTR InputBuf,VS_BINBUFPTR OutputBuf);

/*[Private Function] : bool=CodeBMP(InWidth,InHeight,InBuf,OutBuf)    */
extern VS_UUID VSFUNCID_SImgLibClass_CodeBMP;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_CODEBMP(X)  {}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_CODEBMP                                                 0
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_CODEBMP(X)  {}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_CODEBMP                                                  0

extern VS_INT32 SRPAPI SImgLibClass_CodeBMP(void);
typedef VS_INT32 (SRPAPI *SImgLibClass_CodeBMPProc)(void);

/*[Private Function] :     */
extern VS_UUID VSFUNCID_SImgLibClass_C_CodeJPG;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_C_CODEJPG(X)  {{X[0].Type=1;}}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_C_CODEJPG                                               1
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_C_CODEJPG(X)  {{X[0].Type=7;}{X[1].Type=7;}{X[2].Type=59;}{X[3].Type=8;}{X[4].Type=59;}}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_C_CODEJPG                                                5

extern VS_BOOL SRPAPI SImgLibClass_C_CodeJPG(void *Object,VS_UINT32 InWidth,VS_UINT32 InHeight,VS_BINBUFPTR InputBuf,VS_FLOAT Quality,VS_BINBUFPTR OutputBuf);
typedef VS_BOOL (SRPAPI *SImgLibClass_C_CodeJPGProc)(void *Object,VS_UINT32 InWidth,VS_UINT32 InHeight,VS_BINBUFPTR InputBuf,VS_FLOAT Quality,VS_BINBUFPTR OutputBuf);

/*[Private Function] : bool=CodeJPG(InWidth,InHeight,InBuf,Quality,OutBuf)    */
extern VS_UUID VSFUNCID_SImgLibClass_CodeJPG;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_CODEJPG(X)  {}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_CODEJPG                                                 0
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_CODEJPG(X)  {}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_CODEJPG                                                  0

extern VS_INT32 SRPAPI SImgLibClass_CodeJPG(void);
typedef VS_INT32 (SRPAPI *SImgLibClass_CodeJPGProc)(void);

/*[Private Function] :     */
extern VS_UUID VSFUNCID_SImgLibClass_C_CodePNG;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_C_CODEPNG(X)  {{X[0].Type=1;}}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_C_CODEPNG                                               1
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_C_CODEPNG(X)  {{X[0].Type=7;}{X[1].Type=7;}{X[2].Type=59;}{X[3].Type=59;}}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_C_CODEPNG                                                4

extern VS_BOOL SRPAPI SImgLibClass_C_CodePNG(void *Object,VS_UINT32 InWidth,VS_UINT32 InHeight,VS_BINBUFPTR InputBuf,VS_BINBUFPTR OutputBuf);
typedef VS_BOOL (SRPAPI *SImgLibClass_C_CodePNGProc)(void *Object,VS_UINT32 InWidth,VS_UINT32 InHeight,VS_BINBUFPTR InputBuf,VS_BINBUFPTR OutputBuf);

/*[Private Function] : bool=CodePNG(InWidth,InHeight,InBuf,OutBuf)    */
extern VS_UUID VSFUNCID_SImgLibClass_CodePNG;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_CODEPNG(X)  {}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_CODEPNG                                                 0
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_CODEPNG(X)  {}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_CODEPNG                                                  0

extern VS_INT32 SRPAPI SImgLibClass_CodePNG(void);
typedef VS_INT32 (SRPAPI *SImgLibClass_CodePNGProc)(void);

/*[Private Function] :     */
extern VS_UUID VSFUNCID_SImgLibClass_C_DecodeGIF;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_C_DECODEGIF(X)  {{X[0].Type=1;}}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_C_DECODEGIF                                             1
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_C_DECODEGIF(X)  {{X[0].Type=59;}{X[1].Type=53;}{X[2].Type=53;}{X[3].Type=59;}{X[4].Type=53;}{X[5].Type=40;}}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_C_DECODEGIF                                              6

extern VS_BOOL SRPAPI SImgLibClass_C_DecodeGIF(void *Object,VS_BINBUFPTR InputBuf,VS_UINT32 * OutWidth,VS_UINT32 * OutHeight,VS_BINBUFPTR OutputBuf,VS_UINT32 * FrameNumber,VS_PARAPKGPTR DelayTime);
typedef VS_BOOL (SRPAPI *SImgLibClass_C_DecodeGIFProc)(void *Object,VS_BINBUFPTR InputBuf,VS_UINT32 * OutWidth,VS_UINT32 * OutHeight,VS_BINBUFPTR OutputBuf,VS_UINT32 * FrameNumber,VS_PARAPKGPTR DelayTime);

/*[Private Function] : bool,Width,Height,FrameNumber=DecodeImg(InputBuf,OutputBuf,DelayTime)    */
extern VS_UUID VSFUNCID_SImgLibClass_DecodeGIF;
#define VSFUNCRETURNDEPEND_SIMGLIBCLASS_DECODEGIF(X)  {}
#define VSFUNCRETURNDEPENDNUM_SIMGLIBCLASS_DECODEGIF                                               0
#define VSFUNCPARAMDEPEND_SIMGLIBCLASS_DECODEGIF(X)  {}
#define VSFUNCPARAMDEPENDNUM_SIMGLIBCLASS_DECODEGIF                                                0

extern VS_INT32 SRPAPI SImgLibClass_DecodeGIF(void);
typedef VS_INT32 (SRPAPI *SImgLibClass_DecodeGIFProc)(void);

struct StructOfAttachSImgLibClass{
};
struct StructOfSImgLibClass{
};

/*++++++++++++++++++++++++++++++++++++++++++++++++++*/
#define VSOBJNAME_SRPSIMGLIBENGINE                                                                 "SRPSImgLibEngine"
extern VS_UUID VSOBJID_SRPSImgLibEngine;

/*++++++++++++++++++++++++++++++++++++++++++++++++++*/
//#define VSOBJNAME_BASICSERVICEITEM                                                                 "BasicServiceItem"
//UUID VSOBJID_BasicServiceItem;
/*--------------------------------------------------*/
extern class ClassOfSRPInterface *pSRP;
extern VS_INT32 SRPProgramType;
extern VS_HANDLE SRPModuleHandle;

#pragma pack()

#endif
